package test00;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Parameter;

/**
 * @Author lzp
 * @Date 2024-03-26
 */
public class test03 {
    public static void main(String[] args) {

        // 拼接参数字符串
        String paramStr = "" ;

        //第一 : 获取类的 Class 对象
        Class<String> clazz = String.class;

        // 获取 String 类的所有方法 - getDeclaredMethods()检索类的所有声明方法
        Method[] methods = clazz.getDeclaredMethods();

        //遍历方法的相关信息
        for (Method method : methods) {
            // 1、方法修饰符
            //System.out.println(method);
            //获取方法的访问修饰符 - 数字形式
            int modifiers = method.getModifiers();
            //获取方法的访问修饰符 - 字符形式
            String strModifier = Modifier.toString(modifiers);
            //String strModifier = Modifier.toString(method.getModifiers());

            //2、返回值类型名称 - 获取方法的类型
            String typeName = method.getReturnType().getSimpleName();

            //3、获取方法名称
            String name = method.getName();

            //4、方法参数
            Parameter[] parameters = method.getParameters();


            for (Parameter parameter : parameters) {

                //获取参数类型
                String parameterType = parameter.getType().getSimpleName();
                //获取参数名称
                String parameterName = parameter.getName();

                paramStr +=  parameterType + " " + parameterName + "," ;

            }

            System.out.print(strModifier + " " + typeName + " " + name + " (");
            paramStr = "".equals(paramStr) ? paramStr : paramStr.substring(0,paramStr.length()-1);
            System.out.print(paramStr);

            System.out.println(")");
            // 清空上一个方法的参数
            paramStr = "" ;
        }

    }
}
